#include<sw/redis++/redis.h>
#include<iostream>
#include<thread>
void test_ADSU(sw::redis::Redis& client)
{
    //后面需要用Redis管理会话，所以这里的例子使用会话和用户
    //增
    client.set("会话1","用户ID1");
    client.set("会话2","用户ID2");
    client.set("会话3","用户ID3");
    //删
    client.del("会话2");
    //改
    client.set("会话3","用户ID3.promax");
    //查
    auto user1 = client.get("会话1");
    auto user2 = client.get("会话2");
    auto user3 = client.get("会话3");
    //这里获得的对象使用方法类似于迭代器，且可以用bool判断是否获得有效值
    if(user1) std::cout<<*user1<<std::endl;
    if(user2) std::cout<<*user2<<std::endl;
    if(user3) std::cout<<*user3<<std::endl;
    //测试过期时间参数
    client.set("会话4","用户ID4",std::chrono::seconds(2));

    auto user4 = client.get("会话4");
    if(user4) std::cout<<*user4<<std::endl;

    std::this_thread::sleep_for(std::chrono::seconds(3));

    user4 = client.get("会话4");
    if(user4) std::cout<<*user4<<std::endl;
}
void test_list_add(sw::redis::Redis& client)
{
    //list_right_push
    client.rpush("群聊1","群友1");
    client.rpush("群聊1","群友2");
    client.rpush("群聊1","群友3");
    //使用vector数组和back_inserter尾插插入器获得list数据
    std::vector<std::string> users;
    //参数是(key,begin,end(-1就是表示npos),inserter);
    client.lrange("群聊1",0,-1,std::back_inserter(users));
    std::cout<<"[";
    for(auto e:users)
    std::cout<<e<<", ";
    std::cout<<"]\n";
}


int main()
{
    //1.配置连接选项，实例化redis,连接服务器
    sw::redis::ConnectionOptions  opts;
    opts.host="127.0.0.1";//服务器IP地址 
    opts.port= 6379;//服务器端口号
    opts.db = 0;//Redis库的编号，默认就是0号
    opts.keep_alive = true;//是否进行长连接保活
    sw::redis::Redis client(opts);
    //2.对Redis数据库进行增删查改
    test_list_add(client);
    return 0;
    
};